home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 26 / AACD 26.iso / AACD / Graphics / sKulpt / skulpt-src / MACROS.H < prev    next >
Encoding:
C/C++ Source or Header  |  2000-07-23  |  4.8 KB  |  109 lines

  1. // Macros
  2.  
  3. // Transformer une coordonnée 3D flottante en une coordonnée entière fenêtre 2D
  4. #define XDM_to2D(fa, fmin, wmin, fcoef) ((wmin) + /* (int)*/ (((fa) - (fmin)) * (fcoef)))
  5.  
  6. // Transformer une coordonnée entière fenêtre 2D en une coordonnée 3D flottante
  7. #define XDM_to3D(ia, fmin, wmin, fcoef)  ((fmin) + ((ia) - (wmin)) / (fcoef))
  8.  
  9. // Arrondir une coordonnée sur la grille
  10. #define XDM_toGrid(fA) (((float) ((int) ((fA) / fGridSize))) * fGridSize)
  11.  
  12. // Dessiner un bouton et mémoriser le rectangle dans lequel il est inscrit
  13. #ifndef _AMIGA_
  14. #define XDM_Bouton(bouton, x, y)                                        \
  15.     {                                                                   \
  16.         BitBlt(pWT -> hdcDBuf, (x), (y), XDC_G_LARG, XDC_G_HAUT, gBouton.Gad -> hdc, 0, 0, SRCCOPY); \
  17.         bouton.rect.left = (x);                                              \
  18.         bouton.rect.top = (y);                                              \
  19.         bouton.rect.right = (x) + XDC_G_LARG;                              \
  20.         bouton.rect.bottom = (y) + XDC_G_HAUT;                              \
  21.     }
  22. #else
  23. //      DrawIconState(hWnd -> RPort, bouton.Gad -> hIcon, NULL, x, y, IDS_NORMAL, ICONDRAWA_Borderless, TRUE, TAG_DONE);  n'existe pas en PPC
  24. #define XDM_Bouton(bouton, x, y)                                        \
  25.     {                                                                    \
  26.         DrawImage(hWnd -> RPort, (struct Image *) (bouton.Gad -> hIcon -> do_Gadget.GadgetRender), x, y); \
  27.         bouton.rect.left = x;                                            \
  28.         bouton.rect.top = y;                                            \
  29.         bouton.rect.right = x + XDC_G_LARG;                                \
  30.         bouton.rect.bottom = y + XDC_G_HAUT;                            \
  31.     }
  32. #endif
  33.  
  34. // Vérifier si un point est dans le rectangle associé à un gadget
  35. #define XDM_BoutonClic(GID, Point) PtInRect(&pWT -> Widgets[(GID)].rect, (Point))
  36.  
  37. // Swapper les octets d'un long (les fichiers sont d'origine Amiga 68K)
  38. #ifndef _AMIGA_
  39. #define swapl(x) \
  40.     ((((unsigned long) (x) & 0xFF000000) >> 24) | \
  41.      (((unsigned long) (x) & 0x00FF0000) >> 8)  | \
  42.      (((unsigned long) (x) & 0x0000FF00) << 8)  | \
  43.      (((unsigned long) (x) & 0x000000FF) << 24))
  44. #else
  45. #define swapl(x) (x)
  46. #endif
  47.  
  48. #define CL_BLUE(lBGR)    (((((lBGR) >> 16) & 0x000000FFL) << 24) | 0x00FFFFFFL)
  49. #define CL_GREEN(lBGR)    (((((lBGR) >> 8)  & 0x000000FFL) << 24) | 0x00FFFFFFL)
  50. #define CL_RED(lBGR)    (((((lBGR))          & 0x000000FFL) << 24) | 0x00FFFFFFL)
  51.  
  52. #define CreatePen(a, b, lBGR)                                                    \
  53.                 ObtainBestPen(hInst -> ViewPort.ColorMap,                        \
  54.                                   CL_RED(lBGR), CL_GREEN(lBGR), CL_BLUE(lBGR),    \
  55.                                     OBP_Precision, PRECISION_IMAGE,                \
  56.                                     OBP_FailIfBad, FALSE)
  57.                                     
  58. #define SetPen(hWnd, lBGR) SetAPen(hWnd -> RPort, MakePen(lBGR))
  59.  
  60. #define PeekSignal(s) (bTracking && hApp -> tc_SigRecvd & (s))
  61.  
  62. #define WL_BLUE(lBGR)    ((((lBGR) >> 16) & 0x000000FFL) / 256.)
  63. #define WL_GREEN(lBGR)    ((((lBGR) >> 8)  & 0x000000FFL) / 256.)
  64. #define WL_RED(lBGR)    ((((lBGR))         & 0x000000FFL) / 256.)
  65.  
  66. #define WSetPen(__C, __CL)                                    \
  67. {   sC.r = WL_RED(__CL);                                      \
  68.     sC.g = WL_GREEN(__CL);                                    \
  69.     sC.b = WL_BLUE(__CL);                                     \
  70.     W3D_SetCurrentColor(__C, &sC);                            \
  71. }
  72.  
  73. #define WDraw(__C, __X, __Y, __Z, __T)                        \
  74. {                                                             \
  75.     sL.v1.x = (__X) + fLeftEdge;                              \
  76.     sL.v1.y = (__Y) + fTopEdge;                               \
  77.     sL.v2.x = (__Z) + fLeftEdge;                              \
  78.     sL.v2.y = (__T) + fTopEdge;                               \
  79.     W3D_DrawLine(__C, &sL);                                   \
  80. }
  81.  
  82. #define WPixel(__C, __X, __Y)                                 \
  83. {                                                             \
  84.     sP.v1.x = (__X) + fLeftEdge;                              \
  85.     sP.v1.y = (__Y) + fTopEdge;                               \
  86.     W3D_DrawPoint(__C, &sP);                                  \
  87. }
  88.  
  89. #define WRectFill(__C, __X, __Y, __Z, __T)                    \
  90. {                                                             \
  91.     sV[0].x = sV[3].x = (__X) + fLeftEdge;                    \
  92.     sV[0].y = sV[1].y = (__Y) + fTopEdge;                     \
  93.     sV[1].x = sV[2].x = (__Z) + 1. + fLeftEdge;               \
  94.     sV[2].y = sV[3].y = (__T) + 1. + fTopEdge;                \
  95.     W3D_DrawTriFan(__C, &sTs);                                \
  96. }
  97.  
  98. #define WTriEdge(__C, __X, __Y, __Z, __T, __U, __V)           \
  99. {                                                             \
  100.     sV[0].x = sV[3].x = (__X) + fLeftEdge;                    \
  101.     sV[0].y = sV[3].y = (__Y) + fTopEdge;                     \
  102.     sV[1].x = (__Z) + fLeftEdge;                              \
  103.     sV[1].y = (__T) + fTopEdge;                               \
  104.     sV[2].x = (__U) + fLeftEdge;                              \
  105.     sV[2].y = (__V) + fTopEdge;                               \
  106.     W3D_DrawLineStrip(__C, &sLs);                             \
  107. }
  108.  
  109.